﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using SIM.Geo.BE;
using System.Linq;

namespace SIM.Geo.DA
{
    public class DAGeologo : Base
    {
        #region Metodos
        /// <summary>
        /// Método que devuelve la lista de Geologos
        /// </summary>
        /// <returns></returns>dacate
        public List<Geologo> ListarGeologo()
        {
            return this.Context.Geologo.ToList();
        }
        /// <summary>
        /// Método para insertar un nuevo geologo
        /// </summary>
        /// <param name="geologo"></param>
        /// <returns></returns>
        public int InsertarGeologo(Geologo geologo)
        {
            this.Context.Geologo.AddObject(geologo);
            this.Context.SaveChanges();
            return geologo.CodigoGeologo;
        }
        /// <summary>
        /// Método para modificar un geologo
        /// </summary>
        /// <param name="geologo"></param>
        public void ModificarGeologo(Geologo geologo)
        {
            this.Context.Geologo.Attach(geologo);
            this.Context.ObjectStateManager.ChangeObjectState(geologo, EntityState.Modified);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método para eliminar un geologo
        /// </summary>
        /// <param name="geologo"></param>
        public void EliminarGeologo(Geologo geologo)
        {
            this.Context.Geologo.Attach(geologo);
            this.Context.ObjectStateManager.ChangeObjectState(geologo, EntityState.Deleted);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método que busca por un nombre de geologo
        /// </summary>
        /// <param name="nombre"></param>
        /// <returns></returns>
        public List<Geologo> BuscarGeologo(string nombre)
        {
            return this.Context.Geologo.Where(x => x.Nombres.StartsWith(nombre)).ToList();
        }
        /// <summary>
        /// Método que devuelve un geologo por codigo
        /// </summary>
        /// <param name="codigoGeologo"></param>
        /// <returns></returns>
        public Geologo ObtenerGeologo(int codigoGeologo)
        {
            return this.Context.Geologo.Where(x => x.CodigoGeologo.Equals(codigoGeologo)).FirstOrDefault();
        }
        /// <summary>
        /// Método que devuelve un geologo por codigo de trabajador
        /// </summary>
        /// <param name="codigoGeologo"></param>
        /// <returns></returns>
        public Geologo ObtenerGeologoPorCodigoTrabajador(string codigoTrabajador)
        {
            //Devuelve el primer registro encontrado
            return this.Context.Geologo.Where(x => x.CodigoTrabajador.ToUpper().Trim().CompareTo(codigoTrabajador.ToUpper().Trim()) == 0).FirstOrDefault();
        }
        #endregion
    }
}
